using System;
using System.Collections.Generic;

namespace FGUFW.Core.System
{
    /// <summary>
    /// 无序广播
    /// </summary>
    public class Messenger<T, Y> : IMessenger<T, Y>
    {
        Dictionary<T,Action<Y>> _eventDict = new Dictionary<T, Action<Y>>();
        public void Add(T msgID, Action<Y> callback)
        {
            if(_eventDict.ContainsKey(msgID))
            {
                _eventDict[msgID]-=callback;
                _eventDict[msgID]+=callback;
            }
            else
            {
                _eventDict.Add(msgID,callback);
            }
        }

        public void Broadcast(T msgID, Y msg)
        {
            if(_eventDict.ContainsKey(msgID))
            {
                _eventDict[msgID](msg);
            }
        }

        public void Clear()
        {
            _eventDict.Clear();
        }

        public void Remove(T msgID, Action<Y> callback)
        {
            if(_eventDict.ContainsKey(msgID))
            {
                _eventDict[msgID]-=callback;
            }
            
        }
    }
}
